/*
 * ingreso.c
 *
 *  Created on: 09/09/2011
 *      Author: guido
 */

#include "ingreso.h"
#include "constantes.h"
#include "serializador.h"
#include <cstring>

class Serializador;

Ingreso::Ingreso() {
}



void Ingreso::serializar(char* &bytes, int &tamanyo) {
	tamanyo = this->serialSize();
	bytes = new char[tamanyo];
	Serializador serializador;
	strncpy(bytes, &INGRESO, 1);
	// Asigno 1 a indice para no tomar el caracter identificador
	int indice = 1;
	serializador.serializarInteger(bytes, this->habitacion, indice);
	serializador.serializarCadena(bytes, this->nombre, indice);
	serializador.serializarInteger(bytes, this->balance, indice);
}

int Ingreso::serialSize() {
	return ( sizeof(INGRESO) + WORD_SIZE*3 + nombre.size());
}

void Ingreso::deserializar(char* bytes) {
	Serializador serializador;
	// Asigno 1 a indice para no tomar el caracter identificador
	int indice = 1;
	this->habitacion = serializador.deserializarInteger(bytes, indice);
	this->nombre = serializador.deserializarCadena(bytes, indice);
	this->balance = serializador.deserializarInteger(bytes, indice);
}

void Ingreso::deserializar(std::string entrada) {
	// Borro el caracter de identidad de objeto y el separador
	std::string tempDos = entrada;
	tempDos.erase(0, 2);
	std::string temp = siguienteCampo(tempDos);
	this->habitacion = atoi(temp.c_str());
	temp = siguienteCampo(tempDos);
	this->nombre = temp;
	temp = tempDos;
	this->balance = atoi(temp.c_str());
}

int Ingreso::getNumero() {
	return (this->habitacion);
}

void Ingreso::responder(TerminalesServer &server) {
	server.responderIngreso(this);
}

int Ingreso::getBalance() {
    return balance;
}

std::string Ingreso::getNombre() {
	return (this->nombre);
}



